﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LowLevelGraphics.Filter.Matlabrelated
{
    /// <summary>
    /// B = colfilt(A,[m n],block_type,fun) processes the image A by rearranging each m-by-n block of A into a column of a temporary matrix, and then applying the function fun to this matrix.
    /// fun must be a function handle. Parameterizing Functions, in the MATLAB Mathematics documentation, explains how to provide additional parameters to the function fun. 
    /// The function colfilt zero-pads A, if necessary.
    /// Before calling fun, colfilt calls im2col to create the temporary matrix. After calling fun, colfilt rearranges the columns of the matrix back into m-by-n blocks using col2im.
    /// 
    /// block_type is a string that can have one of the values listed in this table.
    /// 
    /// Note   colfilt can perform operations similar to blockproc and nlfilter, but often executes much faster
    /// Value
    /// Description
    /// 'distinct'
    /// Rearranges each m-by-n distinct block of A into a column in a temporary matrix, and then applies the function fun to this matrix. 
    /// fun must return a matrix the same size as the temporary matrix. colfilt then rearranges the columns of the matrix returned by fun into m-by-n distinct blocks.
    /// 
    /// 'sliding'
    /// 
    /// Rearranges each m-by-n sliding neighborhood of A into a column in a temporary matrix, and then applies the function fun to this matrix. 
    /// fun must return a row vector containing a single value for each column in the temporary matrix. (Column compression functions such as sum return the appropriate type of output.) 
    /// colfilt then rearranges the vector returned by fun into a matrix the same size as A.
    /// </summary>
    public class colfilt : BaseImageFilter
    {
        /// <summary>
        /// 
        /// </summary>
        public colfilt()
        {
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_colfilt"></param>
        internal colfilt(colfilt _colfilt)
        {
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_bitmap"></param>
        /// <returns></returns>
        public override UnsafeBitmap Execute(UnsafeBitmap _bitmap)
        {
            return base.Execute(_bitmap);
        } 

        public override object Clone()
        {
            throw new NotImplementedException();
        }
    }
}
